package com.eascs.web.o2o.web.reward.service;

import java.util.List;
import java.util.Date;

import com.eascs.app.dao.PageResult;
import com.eascs.web.o2o.web.reward.entity.PersonalInfo;
import com.eascs.web.o2o.web.reward.entity.RewardDataDic;
import com.eascs.web.o2o.web.reward.entity.RewardItem;
import com.eascs.web.o2o.web.reward.entity.SearchStaffForm;
import com.eascs.workflow.common.vo.ModelResult;

public interface BaseService {

	/**
	 * 查询某个表所有数据
	 * @param returnType
	 * @return
	 */
	public <T> List<T> findAllEntity(Class<T> returnType);
	
	/**
	 * 根据dd_no查询所有符合条件的RewardItem
	 * @param dd_no
	 * @return
	 */
	public List<RewardItem> findRewardItems(String dd_no);
	
	/**
	 * 查询dd-type=REWARD_TYPE的RewardDataDic
	 * @return
	 */
	public List<RewardDataDic> findRewardDataDics();
	
	/**
	 * 根据条件查询考核信息
	 * @param form
	 */
	public PageResult<Object[]> findPersonalInfo(SearchStaffForm form);
	
	/**
	 * 根据条件查询考核信息，用于导出，字段略有不同
	 * @param form
	 */
	public PageResult<Object[]> downloadPersonalInfo(SearchStaffForm form);
	
	
	/**
	 * 删除某个persioninfo,表：o2obidim.dim_reward_personal_info
	 * @param pi
	 * @return 返回1表示删除成功，0为删除失败
	 */
	public int delPersionInfo(PersonalInfo pi);
	
	/**提供人员信息编辑页面的编辑保存
	 * 根据user_no更新dim_reward_personal_info 中某个PersionalInfo
	 * 一般更新起提点，考核类型，考核方案，当月考核系数（非必填），省区所在梯队（非必填）
	 * @param pi
	 * @return 返回true表示更新成功
	 */
	public boolean editAndSavePersonalInfo(PersonalInfo pi);
	
	/**提供人员信息新增页面的保存
	 * @param pi
	 * @return 返回true表示更新成功
	 */
	public boolean addAndSavePersonalInfo(PersonalInfo pi);
	
	/**
	 * 根据人名联想搜索人员信息
	 * @param userName
	 * @return
	 */
	public ModelResult<List<Object[]>> findListByLikeUserName(String userName);
	
	/**
	 * 编辑人员信息确认
	 * @param pi
	 * @return
	 */
	public boolean editAndConfirmPersonalInfo(PersonalInfo pi);
	
	/**
	 * 新增人员信息确认
	 * @param pi
	 * @return
	 */
	//public boolean addAndConfirmPersonalInfo(PersonalInfo pi);
	
	/**
	 * 根据user_no查人员考核类型及编号，考核方案及编号,多组考核方案
	 * @param userNo
	 * @return
	 */
	public List<Object[]> findPersonalByUserNo(String userNo,String tmonth);
	
	/**
	 * 根据user_no查人员信息
	 * @param userNo
	 * @return
	 */
	public PersonalInfo findPersonalInfo(String userNo,String tmonth);
	
	
	/**
	 * 根据考核类型,省区,入职时间自动计算是否保护期
	 * @param ty,province，dt
	 * @return
	 */
	public String getEvaluateScheme(String ty, String province, Date dt);
}
